#encoding:utf-8


'''  冒泡排序
原理：
冒泡排序重复地走访过要排序的数列，一次比较两个元素，如果他们的顺序错误就把他们交换过来。
走访数列的工作是重复地进行直到没有再需要交换，也就是说该数列已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端，故名。

步骤：
比较相邻的两个元素，如果第一个比第二个大，就交换他们两个。
对每一对相邻元素作同样的工作，从开始第一对到结尾的最后一对，最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤，除了最后一个。
持续每次对越来越少的元素重复上面的步骤，直到没有任何一对数字需要比较。
'''


def bubble_sort_desc(sort_list):
    length = len(sort_list)
    print '待排序列表：%s' % sort_list
    print '#' * 20 + '冒泡排序(降序)开始' + '#' * 20
    for i in range(length):
        for j in range(1, length-i):
            if sort_list[j-1] < sort_list[j]:
                sort_list[j], sort_list[j-1] = sort_list[j-1], sort_list[j]
        print '第%s次排序结果：%s' % (i+1, sort_list)
    print '#' * 20 + '冒泡排序(降序)结束' + '#' * 20
    print '\n冒泡排序（降序）结果：%s' % sort_list
    return sort_list


# 要进行length-1次排序，每次排序要比较
def bubble_sort_asc(sort_list):
    length = len(sort_list)
    print '待排序列表：%s' % sort_list
    print '#'*20 + '冒泡排序(升序)开始' + '#'*20
    for i in range(length-1, 0, -1):
        for j in range(0, i):
            if sort_list[j] > sort_list[j+1]:
                sort_list[j], sort_list[j+1] = sort_list[j+1], sort_list[j]
        print '第%s次排序结果：%s' % (length-i, sort_list)
    print '#' * 20 + '冒泡排序(升序)结束' + '#' * 20
    print '\n冒泡排序（升序）结果：%s' % sort_list
    return sort_list

list_to_sort = [19, 30, 0, 1, 101, 1, 52, 0.5, -1.5, -10]

#bubble_sort_asc(list_to_sort)
#bubble_sort_desc(list_to_sort)
















''' 选择排序

'''


''' 插入排序

'''






'''
if __file__ == '__main__':
    list_to_sort = [30, 19, 0, 1, 1, -10, 52, 0.5, -1.5, 101]
    print 'dd', bubble_sort(list_to_sort)

'''
